package ar.uba.is2.ec.matem.motor.impl;

import java.util.Collection;

import org.apache.log4j.Logger;

import ar.uba.is2.ec.matem.EstadoMeteorologico;
import ar.uba.is2.ec.matem.modelo.Medicion;
import ar.uba.is2.ec.matem.motor.MotorDeReglas;

public class MotorDeReglasImpl implements MotorDeReglas {

	private static final Logger logger = Logger.getLogger(MotorDeReglas.class);
	
	public EstadoMeteorologico calcularEstado(Collection<Medicion> mediciones) {
		
//		if ( logger.isDebugEnabled() ) {
			logger.info(String.format("Calculando estado meteorológico para las siguientes mediciones:\n%s", mediciones));
//		}

		
		double suma = 0;

		for (Medicion medicion : mediciones) {
			suma += medicion.getValor();
		}
		
		
		EstadoMeteorologico resultado = null;

		if (suma <= 0){
			resultado = EstadoMeteorologico.SIN_RESULTADO;
			
		} else if (suma < 50) {
			resultado = EstadoMeteorologico.SOL;
		} else if (suma < 200) {
			resultado = EstadoMeteorologico.LLUVIA;
		} else if (suma < 10000) {
			resultado = EstadoMeteorologico.HURACAN;
		} else {
			resultado = EstadoMeteorologico.EXPLOSION_PLANETARIA;
		}
		
//		if ( logger.isDebugEnabled() ) {
			logger.info(String.format("Estado meteorológico calculado. Suma: %s Estado: %s", suma, resultado));
//		}
		
		return resultado;

	}

}
